//路由
import Vue from "vue";
import VueRouter from "vue-router";
import routes from "./routes.js";
Vue.use(VueRouter);

// 编程式路由导航会出现重复点击报错的情况,所以要修改原型上的push和replace方法
const originPush = VueRouter.prototype.push; // 先将之前的存储到一个变量当中
const originReplace = VueRouter.prototype.replace; // 先将之前的存储到一个变量当中
VueRouter.prototype.push = function (location, okCallBack, errCallBack) {
  if (okCallBack === undefined && errCallBack === undefined) {
    // 上面的判断成立的话，表示没有传递这两个参数
    originPush.call(this, location).catch(() => {}); // 统一处理报错的问题 一劳永逸
  } else {
    originPush.call(this, location, okCallBack, errCallBack);
  }
};
VueRouter.prototype.replace = function (location, okCallBack, errCallBack) {
  if (okCallBack === undefined && errCallBack === undefined) {
    // 上面的判断成立的话，表示没有传递这两个参数
    originReplace.call(this, location).catch(() => {}); // 统一处理报错的问题 一劳永逸
  } else {
    originReplace.call(this, location, okCallBack, errCallBack);
  }
};

const router = new VueRouter({
  // 决跳转时滚动条位置的问题
  mode: "history", // 设置路由模式  不要#
  routes,
  scrollBehavior(to, from, savedPosition) {
    // console.log(to,from,savedPosition)
    // to 要跳转到哪个页面
    // from : 从哪个页面跳转过来
    // savedPosition: 保存之前页面的位置
    // return 期望滚动到哪个的位置
    if (savedPosition) {
      return savedPosition;
    } else {
      return { x: 0, y: 0 };
    }
  },
});
export default router;
